package com.kaifamiao.files;

import java.io.File;
import java.io.IOException;

/**
 * 1、名称分隔符
 *      同一个 路径名称 中 不同部分之间的分隔符，比如
 *      `D:\kaifamiao\codes\java-advanced\files-and-streams`
 *      以上 路径名称 中的分隔符即为 `\`
 * 2、"路径"分隔符
 *      表示在环境变量中，某个变量值中的多个路径之间的分隔符，比如 CLASSPATH 变量的取值为
 *      `.;D:\kaifamiao\applications\apache-tomcat-9.0.67\lib\servlet-api.jar`
 *      以上 取值中 中的分隔符即为 `;`
 * 3、当前路径用 `.` 表示
 * 4、上级路径用 `..` 表示
 */
public class FileTest3 {

    public static void main(String[] args) throws IOException {

        // 与系统有关的默认分隔符
        // 在 Windows 系统中 默认分隔符 是 `\` (反斜杠)
        // 在 Unix/Linux/macOS 系统中 默认分隔符 是 `/` (正斜杠)
        System.out.println( "分隔符: " + File.separatorChar );
        System.out.println( "分隔符: " + File.separator );

        // 与系统有关的环境变量中多个路径之间的分隔符
        // 在 Windows 中 "路径"分隔符 是 `;` (分号)
        // 在 Unix/Linux/macOS 系统中 "路径"分隔符 是 `:` (冒号)
        System.out.println( "分隔符: " + File.pathSeparatorChar );
        System.out.println( "分隔符: " + File.pathSeparator );

        System.out.println( "- ".repeat( 10 ) );

        // 采用相对路径表示当前路径
        File current = new File( "." );
        System.out.println( current );
        // 获得当前路径的绝路路径表示形式
        File abs = current.getAbsoluteFile();
        System.out.println( abs );
        // 获得指定路径的规范化表示形式
        File canonical = current.getCanonicalFile();
        System.out.println( canonical );

        // 采用相对路径表示当前路径的父路径
        File parent = new File( ".." );
        System.out.println( parent );
        // 获得当前路径的父路径的绝路路径表示形式
        abs = parent.getAbsoluteFile();
        System.out.println( abs );
        // 获得指定路径的规范化表示形式
        canonical = parent.getCanonicalFile();
        System.out.println( canonical );

    }

}
